﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Shapes;
using System.Windows;
using Microsoft.Surface.Presentation;

namespace SurfaceCardsBoardLibrary.Interfaces
{
    public interface IDeck : ICardContainer
    {
        IDisposition Disposition { get; set; }
        bool AutoRemoveWhenEmpty { get; set; }
        Func<Rect> GetCardsDestinationRect { get; set; }
        IDisposable DeferUpdateDisposition(bool useTransitions, bool sizeChanged);

        bool AutoSort { get; set; }
        Comparison<ICard> SortComparison { get; set; }

        void Shuffle(int seed);
        void Move(int oldIndex, int newIndex);
        void Sort();

        CardInDeckPosition CardAddingPosition { get; set; }
        CardInDeckFace CardAddingFace { get; set; }
        CardInDeckFace CardRemovingFace { get; set; }

        DeckOrientation DeckOrientation { get; set; }

        bool CanMergeByUser { get; set; }
    }
}
